CAN 버스
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
CAN 버스는 1983년 독일의 로버트 보쉬 유한회사에서 개발된 차량 내 통신 네트워크 프로토콜이다. 자동차, 농업 장비, 산업 자동화 등 다양한 분야에 사용되며, 여러 전자 제어 장치(ECU) 간의 통신을 가능하게 한다. CAN은 충돌 해결을 위해 우성/열성 비트를 사용하며, ISO 11898 표준에 의해 정의된 데이터 링크 계층 및 물리 계층을 가진다. 최근 CAN FD(Flexible Data-Rate) 및 CAN XL과 같은 기술 확장을 통해 데이터 전송 속도와 페이로드를 향상시켰다.
더 읽어볼만한 페이지
- 통신 표준 - 8b/10b 인코딩
8b/10b 인코딩은 8비트 데이터를 10비트 데이터로 변환하여 클럭 정보 내장, 직류 성분 균형 유지, 런 길이 제한 등의 특징을 가지며 기가비트 이더넷, 파이버 채널, USB 3.0, HDMI 등 다양한 통신 기술에 널리 사용되는 부호화 방식이다. - 통신 표준 - 고급 데이터 연결 제어
고급 데이터 연결 제어(HDLC)는 IBM의 SDLC 프로토콜을 기반으로 개발되어 ITU, ANSI 등에서 표준화된 동기식/비동기식 데이터 링크 제어 프로토콜로서, 프레임 구조 정의, 투명성 확보 기법, 다양한 프레임 종류를 통해 통신 요구를 지원한다. - 산업 컴퓨팅 - 이더넷/IP
이더넷/IP는 산업 자동화를 위한 산업용 네트워크 프로토콜로, UDP, TCP 기반 메시징과 유니캐스트, 멀티캐스트, 브로드캐스트 통신을 지원하며 ODVA에서 관리하는 CIP 네트워크 중 하나이다. - 산업 컴퓨팅 - 스턱스넷
스턱스넷은 산업 제어 시스템을 표적으로 설계된 악성 소프트웨어로, 윈도우 제로 데이 공격을 활용하여 확산되었으며 이란의 핵 시설을 공격한 것으로 알려져 있고 국가적 차원의 개발이 추정되며 이스라엘과 미국이 배후로 지목되고 있다.
CAN 버스 | |
---|---|
일반 정보 | |
![]() | |
종류 | 직렬 통신 버스 |
설계 | Bosch GmbH |
설계 날짜 | 1983년 |
상태 | 활성 |
전기적 신호 | 차동 |
최대 전압 | 16V DC |
데이터 신호 | 트랜시버 구동 |
데이터 비트 폭 | 1비트 (양방향) |
데이터 대역폭 | 0.05, 0.125, 0.250, 0.500, 0.800 또는 1.0 Mbit/s, CAN FD의 경우 최대 5.0 Mbit/s |
데이터 장치 수 | 32, 64 또는 127 (표준에 따라 다름) |
데이터 스타일 | 직렬, 반이중, 비동기 |
케이블 | 해당 없음 |
물리적 커넥터 | 해당 없음 |
핀 수 | 해당 없음 |
핀 이름 (CAN-H) | CAN High (노란색) |
핀 이름 (CAN-L) | CAN Low (녹색) |
기술 정보 | |
통신 방식 | 직렬, 비동기, 반이중 |
신호 방식 | 차동 신호 |
전송 속도 | 최대 1 Mbit/s (CAN 2.0), 최대 5 Mbit/s (CAN FD) |
프로토콜 | CAN 2.0A CAN 2.0B CAN FD |
활용 분야 | |
주요 사용처 | 자동차 전장 제어 산업 자동화 의료 기기 항공 우주 |
표준 | |
관련 표준 | ISO 11898 SAE J1939 CANopen DeviceNet |
2. 역사
CAN 버스의 개발은 1983년 독일의 보쉬에서 시작되었다.[1] 이 프로토콜은 1986년 미국 미시간주 디트로이트에서 열린 자동차 기술자 협회(SAE) 컨퍼런스에서 공식적으로 발표되었다.[1] 1987년 인텔(Intel)과 필립스(Philips)에서 최초의 CAN 컨트롤러 칩이 출시되었다.[1]
CAN은 승용차, 트럭, 버스(내연기관 차량 및 전기 자동차), 농업 장비, 항공 및 항해용 전자 장비, 발전기, 산업 자동화 및 기계 제어, 엘리베이터, 에스컬레이터, 건물 자동화, 의료 기기 및 장비, 페델렉, 모형 철도, 선박 및 기타 해양 응용 분야, 조명 제어 시스템, 3D 프린터, 로봇 공학/자동화 등 다양한 산업 분야에서 활용되고 있다.
보쉬는 여러 버전의 CAN 사양을 발표했는데, 가장 최신 버전은 1991년에 발표된 CAN 2.0이다. CAN 2.0A는 11비트 식별자를 사용하고, CAN 2.0B는 29비트 식별자를 사용한다.[4]
1993년, 국제 표준화 기구(ISO)는 CAN 표준 ISO 11898을 발표했다. ISO 11898-1은 데이터 링크 계층을 다루고, ISO 11898-2는 고속 CAN을 위한 CAN 물리 계층을, ISO 11898-3은 저속, 내결함성 CAN을 위한 CAN 물리 계층을 다룬다.
2012년, 보쉬는 CAN FD 1.0 (유연한 데이터 속도를 가진 CAN)을 출시했다. CAN FD는 기존 CAN 2.0 네트워크와 호환된다. 보쉬는 현재 CAN 표준 확장에 적극적으로 참여하고 있다.
3. 응용 분야
자동차 분야에서 CAN은 엔진 제어 장치, 에어백, ABS 등 다양한 장치 간 통신에 사용되며, 최근에는 LIN 버스가 CAN을 보완하고 있다. 그 외에도 CAN 버스는 시마노 DI2 전자 기어 변속 시스템, NISMO의 레이싱 랩 재현, 존스 홉킨스 대학교 응용물리학 연구소의 모듈형 의수(MPL), FIRST 로봇 경진대회 로봇, CueScript 자동자막기, 디지털 명령 제어, 다이빙 재호흡기 등 다양한 분야에 사용된다.[7][8]
3. 1. 자동차
현대 자동차는 다양한 하위 시스템을 위해 최대 70개에 달하는 전자 제어 장치(ECU)를 탑재할 수 있다.[6] CAN은 이러한 ECU 간의 통신에 핵심적인 역할을 한다.
CAN은 엔진 제어 장치, 자율 주행, 첨단 운전자 보조 시스템(ADAS), 변속기(Transmission (mechanics)), 에어백, ABS, 크루즈 컨트롤, 전기 파워 스티어링, 오디오 시스템, 파워 윈도우, 도어, 거울 조정, 하이브리드/전기 자동차용 배터리 및 충전 시스템 등에 사용된다.
CAN을 통해 다음과 같은 다양한 기능을 구현할 수 있다.
최근에는 LIN 버스(Local Interconnect Network) 표준이 도입되어 CAN을 보완하고 있다.
3. 2. 기타 응용 분야
CAN 버스는 다음과 같은 다양한 분야에서 응용되고 있다.
CAN 버스 프로토콜은 2009년부터 로드 자전거용 시마노 DI2 전자 기어 변속 시스템에 사용되었으며, 안스만과 BionX 시스템의 다이렉트 드라이브 모터에도 사용된다.[7]
CAN 버스는 또한 일부 CAN 컨트롤러 및 프로세서의 저렴한 비용으로 인해 일반적인 자동화 환경에서 필드버스로 사용된다.[7]
NISMO를 포함한 제조업체들은 CAN 버스 데이터를 사용하여 게임의 GPS 데이터 로거 기능을 활용하여 비디오 게임 ''그란 투리스모 6''에서 실제 레이싱 랩을 재현하는 것을 목표로 하며, 이를 통해 플레이어는 실제 랩과 경쟁할 수 있다.[7]
존스 홉킨스 대학교의 응용물리학 연구소의 모듈형 의수(MPL)는 의수 내 서보 및 마이크로컨트롤러 간의 통신을 용이하게 하기 위해 로컬 CAN 버스를 사용한다.[7]
FIRST 로봇 경진대회 팀들은 roboRIO와 다른 로봇 제어 모듈 간의 통신을 위해 CAN 버스를 널리 사용한다.[7]
CueScript 자동자막기 제품군은 동축 케이블을 통해 CAN 버스 프로토콜을 사용하여 CSSC – 데스크탑 스크롤 제어 장치를 주 장치에 연결한다.[7]
CAN 버스 프로토콜은 주요 상업용 디지털 명령 제어 시스템 제조업체 및 다양한 오픈 소스 디지털 모델 철도 제어 프로젝트에서 모델 철도 센서 피드백 시스템과 같이 전기적으로 노이즈가 많은 환경에서 내결함성 때문에 널리 구현된다.[7]
Shearwater Research는 다양한 제조업체의 다이빙 재호흡기에 다이빙 컴퓨터를 통합하기 위해 DiveCAN으로 프로토콜을 구현했다.[8]
4. 기술적 특징
CAN은 전자 제어 장치(ECU)를 연결하기 위한 멀티마스터 버스시리얼 버스 규격으로, 통신을 위해서는 네트워크상에 2개 이상의 노드가 필요하다. 각 노드는 CPU, CAN 컨트롤러, 트랜시버로 구성된다.
- CPU, 마이크로프로세서 또는 호스트 프로세서: 수신된 메시지의 의미를 해석하고 전송할 메시지를 결정한다.
- CAN 컨트롤러: 버스로부터 받은 시리얼 비트를 저장하고, 호스트 프로세서에 메시지를 전송한다.
- 트랜시버: 와이어 하네스로부터 받은 차동 전압을 디지털 신호로 변환하고, CAN 컨트롤러로부터 받은 디지털 신호를 차동 전압으로 변환한다.
모든 노드는 2선식 버스를 통해 서로 연결되며, 통신선은 공칭 120Ω의 꼬임쌍선이다. 신호는 두 통신선의 전압 차동에 의해 전송되므로 노이즈에 강하다.
CAN 버스는 '''ISO 11898-2'''(고속 CAN)와 '''ISO 11898-3'''(저속 CAN) 두 가지 주요 표준으로 나뉜다.

- ISO 11898-2 (고속 CAN): 양단이 120Ω 저항으로 종단된 리니어 버스를 사용한다. 도미넌트(0) 전송 시 CAN 하이 와이어를 5V, 로우 와이어를 0V로 구동하고, 리세시브(1) 전송 시에는 어느 통신선도 구동하지 않는다.

- ISO 11898-3 (저속 CAN): 리니어 버스, 스타 버스, 또는 리니어 버스로 연결된 여러 개의 스타 버스를 사용하며, 각 노드가 전체 종단 저항의 일부로 종단된다. 도미넌트(0) 전송 시 CAN 하이 와이어를 5V, CAN 로우 와이어를 0V로 구동하고, 리세시브(1) 전송 시에는 어느 통신선도 구동하지 않는다.
CAN 버스는 종단되어야 하며, 종단 저항은 반사를 억제하고 버스를 리세시브 또는 유휴 상태로 되돌리기 위해 필요하다.
4. 1. 데이터 전송
CAN 네트워크에서는 둘 이상의 노드가 동시에 데이터를 전송할 때 충돌이 발생할 수 있다. CAN은 "우성(dominant)" 비트(논리 0)와 "열성(recessive)" 비트(논리 1)를 사용하여 충돌을 해결한다. 두 노드가 동시에 0을 보내면 네트워크에 0이, 둘 다 1을 보내면 1이 전송된다. 한 노드는 0, 다른 노드는 1을 보내면 네트워크에는 0이 전송되어 우성 비트가 이긴다. 즉, 낮은 CAN ID를 가진 프레임이 우선순위를 가지며, 충돌 발생 시 우선순위가 높은 프레임이 전송되고 낮은 프레임은 재전송된다. 이러한 충돌 해결 방식 덕분에 CAN 버스는 실시간 우선순위 기반 통신 시스템으로 사용된다.예를 들어 11비트 ID CAN 네트워크에서 노드 ID 15(00000001111b)와 16(00000010000)이 동시에 메시지를 전송한다고 가정해 보자. 두 노드는 시작 비트 이후 ID의 처음 여섯 비트(0)를 충돌 없이 전송한다.
rowspan="2" | | 시작 비트 | ID 비트 | 프레임의 나머지 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
노드 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | |
노드 16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 전송 중지 | ||||
CAN 데이터 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
7번째 비트에서 노드 16은 1(열성 비트), 노드 15는 0(우성 비트)을 전송한다. 노드 16은 자신이 1을 전송했지만 네트워크에서 0을 읽어 충돌을 감지하고 전송을 중단한다. 노드 15는 문제없이 나머지 비트를 전송한다.
CAN 버스는 40m 이하에서 1Mbit/s까지, 500m에서 125kbit/s로 전송할 수 있다. 향상된 CAN FD 표준에서는 충돌 해결 이후 데이터 부분을 더 빠르게 전송할 수 있다.
4. 2. 프레임
CAN 네트워크는 표준 프레임 형식(11비트 식별자)과 확장 프레임 형식(29비트 식별자)을 사용할 수 있다. 두 형식은 IDE 비트를 통해 구분되며, 11비트 프레임은 도미넌트(0), 29비트 프레임은 리세시브(1)로 전송된다. 확장 프레임 형식 메시지를 지원하는 CAN 컨트롤러는 표준 프레임 형식 메시지도 송수신할 수 있다. 모든 프레임은 프레임 전송 시작을 알리는 SOF(Start-of-Frame) 비트로 시작한다.[17]CAN에는 다음과 같은 네 가지 프레임 유형이 있다.
- 데이터 프레임: 노드 데이터를 전송한다.
- 원격 프레임: 특정 식별자를 가진 데이터 전송을 요청한다.
- 오류 프레임: 오류를 감지한 노드가 전송한다.
- 오버로드 프레임: 데이터 또는 원격 프레임 사이에 지연을 삽입한다.
데이터 프레임은 실제 데이터 전송을 위한 유일한 프레임이며, 기본 프레임 형식(11비트 식별자)과 확장 프레임 형식(29비트 식별자) 두 가지가 있다. CAN 표준은 기본 프레임 형식을 반드시 수용해야 하며, 확장 프레임 형식은 수용하지 않아도 되지만, 이에 대응해야 한다.


표준 프레임 형식은 다음과 같다.
필드 이름 | 길이 (비트) | 목적 |
---|---|---|
프레임 시작(SOF) | 1 | 프레임 전송 시작 |
식별자 (녹색) | 11 | 메시지 우선 순위 (고유 식별자) |
원격 전송 요청(RTR) (파란색) | 1 | 데이터 프레임: 도미넌트(0), 원격 프레임: 리세시브(1) (원격 프레임 참조) |
식별자 확장 비트(IDE) | 1 | 기본 프레임 형식: 도미넌트(0) |
예약 비트(r0) | 1 | 예약 비트. 도미넌트(0) (도미넌트 또는 리세시브 허용) |
데이터 길이 코드(DLC) (노란색) | 4 | 데이터 바이트 수 (0~8 바이트) |
데이터 필드 (빨간색) | 0–64 (0-8 바이트) | 전송 데이터 (DLC 필드에 의해 결정) |
CRC | 15 | 순환 중복 검사 |
CRC 구분자 | 1 | 리세시브(1) |
ACK 슬롯 | 1 | 송신기: 리세시브(1), 수신기: 도미넌트(0) 어서트 가능 |
ACK 구분자 | 1 | 리세시브(1) |
프레임 종료(EOF) | 7 | 리세시브(1) |
프레임 간 간격(IFS) | 3 | 리세시브(1) |
확장 프레임 형식은 다음과 같다.
필드 이름 | 길이 (비트) | 목적 |
---|---|---|
프레임 시작(SOF) | 1 | 프레임 전송 시작 |
식별자 A (녹색) | 11 | 메시지 우선 순위 (고유 식별자) |
대체 원격 요청(SRR) | 1 | 리세시브(1) |
식별자 확장 비트(IDE) | 1 | 확장 프레임 형식: 리세시브(1) |
식별자 B (녹색) | 18 | 메시지 우선 순위 (고유 식별자) |
원격 전송 요청(RTR) (파란색) | 1 | 데이터 프레임: 도미넌트(0), 원격 프레임: 리세시브(1) (원격 프레임 참조) |
예약 비트(r1, r0) | 2 | 예약 비트. 도미넌트(0) (도미넌트 또는 리세시브 허용) |
데이터 길이 코드(DLC) (노란색) | 4 | 데이터 바이트 수 (0~8 바이트) |
데이터 필드 (빨간색) | 0–64 (0-8 바이트) | 전송 데이터 (DLC 필드에 의해 결정) |
CRC | 15 | 순환 중복 검사 |
CRC 구분자 | 1 | 리세시브(1) |
ACK 슬롯 | 1 | 송신기: 리세시브(1), 수신기: 도미넌트(0) 어서트 가능 |
ACK 구분자 | 1 | 리세시브(1) |
프레임 종료(EOF) | 7 | 리세시브(1) |
프레임 간 간격(IFS) | 3 | 리세시브(1) |
두 식별자 필드(A & B)는 결합되어 29비트 식별자를 형성한다.
데이터 전송은 일반적으로 데이터 소스 노드(예: 센서)가 데이터 프레임을 전송하는 자율적인 방식으로 수행되지만, 대상 노드가 원격 프레임을 전송하여 소스에서 데이터를 요청할 수도 있다. 데이터 프레임과 원격 프레임의 차이점은 RTR 비트(데이터 프레임: 도미넌트(0), 원격 프레임: 리세시브(1))와 데이터 필드 유무(원격 프레임에는 없음)이다. DLC 필드는 요청된 메시지의 데이터 길이를 나타낸다. 동일 식별자를 가진 데이터/리모트 프레임 동시 전송 시, 도미넌트 RTR 비트를 가진 데이터 프레임이 우선권을 가진다.
오류 프레임은 다른 스테이션에서 기여된 오류 플래그(6~12개의 도미넌트/리세시브 비트)의 중첩 필드와 오류 구분자(8개의 리세시브 비트)로 구성된다. 오류 플래그에는 활성 오류 플래그(6개의 도미넌트 비트, '오류 활성' 상태에서 오류 감지 노드에 의해 전송)와 수동 오류 플래그(6개의 리세시브 비트, '오류 수동' 상태에서 활성 오류 프레임 감지 노드에 의해 전송) 두 가지 유형이 있다.
CAN에는 전송 오류 카운터(TEC)와 수신 오류 카운터(REC) 두 개의 오류 카운터가 있다. TEC 또는 REC가 127보다 크고 255보다 작으면 수동 오류 프레임이, TEC 및 REC가 128보다 작으면 활성 오류 프레임이, TEC가 255보다 크면 노드가 버스 오프 상태가 되어 프레임이 전송되지 않는다.
과부하 프레임은 과부하 플래그(6개의 도미넌트 비트)와 과부하 구분 기호(8개의 리세시브 비트) 두 비트 필드로 구성된다. 과부하 플래그 전송을 유발하는 과부하 조건은 다음 데이터/원격 프레임 지연 필요 수신기 내부 조건 또는 간헐 시간 동안 도미넌트 비트 감지이다.
ACK 슬롯은 유효한 CAN 프레임 수신 확인에 사용된다. 오류 없이 프레임 수신 노드는 ACK 슬롯에서 도미넌트 레벨을 전송하여 송신기의 리세시브 레벨을 무시한다. 송신기가 ACK 슬롯에서 리세시브 레벨을 감지하면 수신기가 유효한 프레임을 찾지 못했음을 인지한다.
데이터/원격 프레임은 인터프레임 공간(최소 3개 연속 리세시브(1) 비트)으로 이전 프레임과 구분된다. 도미넌트 비트 감지 시 다음 프레임의 '프레임 시작' 비트로 간주된다. 오버로드/오류 프레임은 인터프레임 공간이 선행되지 않으며, 여러 오버로드 프레임은 인터프레임 공간으로 구분되지 않는다. 인터프레임 공간에는 인터미션/버스 유휴 비트 필드가 포함되며, 이전 메시지 송신자였던 오류 수동 스테이션 전송을 일시 중단한다.[17]
4. 2. 1. CAN FD
CAN FD(Flexible Data-Rate, 가변 데이터 전송률)는 보쉬가 개발하여 2012년에 출시되었으며, ISO 11898-1로 표준화되었다.[9][12][20] CAN FD는 단일 프레임 전송 중에 가변 데이터 속도를 제공하여, 통신 중재 단계에서는 낮은 속도로, 데이터 페이로드 전송 단계에서는 높은 속도로 통신하여 효율성과 노이즈 내성을 높였다. 특히 전기적 노이즈가 많은 환경에서 유용하다. 또한, 데이터 필드의 최대 크기를 8바이트에서 64바이트로 늘려, 고해상도 센서 데이터나 소프트웨어 업데이트와 같이 대용량 데이터 전송이 필요한 응용 분야에 적합하다.CAN FD는 CAN 2.0B와 동일한 프레임 형식을 사용하면서도, 새로운 제어 필드를 추가하여 CAN FD 프레임과 표준 CAN 2.0 프레임을 구별한다. 이를 통해 CAN FD 장치는 동일한 버스에서 CAN 2.0 장치와 공존할 수 있으며, 다른 CAN FD 장치와 통신할 때만 더 높은 데이터 속도와 더 큰 데이터 페이로드를 사용할 수 있다.[9][12][20]
CAN 표준 프레임과의 주요 차이점은 다음과 같다.
- r0 비트가 FDF 비트로 변경
- res, BRS, ESI 비트 추가
- CRC 필드 직전에 스태프 카운트 추가
- CRC 길이 변경
CAN FD 표준 프레임 포맷은 다음과 같다.
필드명 | 비트 길이 | 목적 |
---|---|---|
프레임 시작(SOF) | 1 | 프레임 전송 시작 |
식별자(녹색) | 11 | 고유 식별자 및 메시지 우선 순위 |
리모트 요청 대체(RRS) | 1 | CAN FD에서는 리모트 프레임이 없으므로 도미넌트(0) |
식별자 확장 비트(IDE) | 1 | 표준 프레임 포맷에서는 도미넌트(0) |
FD 포맷 식별 비트(FDF) | 1 | CAN FD 데이터 프레임에서는 리세시브(1) |
예약 비트(res) | 1 | 예약 비트. 도미넌트(0) |
비트레이트 스위치(BRS) | 1 | 데이터 필드 고속 전송 시 리세시브(1), 통상 속도 시 도미넌트(0) |
에러 상태(ESI) | 1 | 송신 노드 에러 상태 (Error Passive: 리세시브(1), Error Active: 도미넌트(0)) |
데이터 길이 코드(DLC) (황색) | 4 | 데이터 바이트 수 (0–8/12/16/20/24/32/48/64 바이트) |
데이터 필드(적색) | 0–512 | 전송 데이터 (DLC 필드에 의해 지정된 길이) |
스태프 카운트 | 4 | 스태프 비트 수/8의 나머지(3비트) + 패리티 비트(1비트) |
CRC | 17/21 | 순환 중복 검사. 데이터 길이에 따라 17비트 또는 21비트 |
CRC 딜리미터 | 1 | 리세시브(1) |
ACK 슬롯 | 1 | 송신기는 리세시브(1) 전송 |
ACK 딜리미터 | 1 | 리세시브(1) |
프레임 종료(EOF) | 7 | 모두 리세시브(1) |
CAN 확장 프레임과의 주요 차이점은 CAN 표준 프레임과 동일하다.
CAN FD 확장 프레임 형식은 다음과 같다.
필드명 | 비트 길이 | 목적 |
---|---|---|
프레임 시작(SOF) | 1 | 프레임 전송 시작 |
식별자(녹색) | 11 | 고유 식별자 및 메시지 우선 순위 |
대체 리모트 요청(SRR) | 1 | 리세시브(1) |
식별자 확장 비트(IDE) | 1 | 확장 프레임 형식에서는 리세시브(1) |
식별자 확장(녹색) | 18 | 고유 식별자 및 메시지 우선 순위 |
리모트 요청 대체(RRS) | 1 | CAN FD에서는 리모트 프레임이 없으므로 도미넌트(0) |
FD 형식 식별 비트(FDF) | 1 | CAN FD 데이터 프레임에서는 리세시브(1) |
예약 비트(res) | 1 | 예약 비트. 도미넌트(0) |
비트 레이트 스위치(BRS) | 1 | 데이터 필드 고속 전송 시 리세시브(1), 일반 속도 시 도미넌트(0) |
에러 상태(ESI) | 1 | 전송 노드 에러 상태 (Error Passive: 리세시브(1), Error Active: 도미넌트(0)) |
데이터 길이 코드(DLC) (황색) | 4 | 데이터 바이트 수 (0–8/12/16/20/24/32/48/64 바이트) |
데이터 필드(적색) | 0–512 | 전송 데이터 (DLC 필드에 의해 지정된 길이) |
스태프 카운트 | 4 | 스태프 비트 수/8의 나머지(3비트) + 패리티 비트(1비트) |
CRC | 17/21 | 순환 중복 검사. 데이터 길이에 따라 17비트 또는 21비트 |
CRC 디리미터 | 1 | 리세시브(1) |
ACK 슬롯 | 1 | 송신기는 리세시브(1) 전송 |
ACK 디리미터 | 1 | 리세시브(1) |
프레임 종료(EOF) | 7 | 모두 리세시브(1) |
4. 3. 아키텍처
CAN은 멀티 마스터 시리얼 버스 표준으로, 전자 제어 장치(ECU) 또는 노드라고도 불리는 장치를 연결하는 데 사용된다. CAN 버스에서 통신하려면 두 개 이상의 노드가 필요하다. 각 노드는 중앙 처리 장치, CAN 컨트롤러, 트랜시버를 필요로 한다.각 노드에 필요한 구성 요소는 다음과 같다.
- 중앙 처리 장치, 마이크로프로세서 또는 호스트 프로세서:
- 수신된 메시지의 의미와 전송할 메시지를 결정한다.
- 센서, 액추에이터 및 제어 장치를 호스트 프로세서에 연결할 수 있다.
- CAN 컨트롤러 (주로 마이크로컨트롤러의 일부):
- 수신: CAN 컨트롤러는 전체 메시지를 사용할 수 있을 때까지 버스에서 수신된 직렬 비트를 저장하며, 호스트 프로세서가 이를 가져올 수 있다(보통 CAN 컨트롤러가 인터럽트를 트리거하여).
- 전송: 호스트 프로세서는 전송 메시지를 CAN 컨트롤러로 보내고, CAN 컨트롤러는 버스가 비어 있을 때 비트를 직렬로 버스에 전송한다.
- 트랜시버 (ISO 11898-2/3 Medium Access Unit [MAU] 표준에 의해 정의됨):
- 수신: CAN 버스 레벨의 데이터 스트림을 CAN 컨트롤러가 사용하는 레벨로 변환한다. 일반적으로 CAN 컨트롤러를 보호하는 보호 회로가 있다.
- 전송: CAN 컨트롤러의 데이터 스트림을 CAN 버스 레벨로 변환한다.
모든 노드는 물리적으로 2선 버스를 통해 서로 연결된다. 전선은 120Ω(공칭) 특성 임피던스를 가진 꼬임쌍선이다.
'''ISO 11898-2'''는 "고속 CAN"(최대 1Mbit/s, CAN-FD에서 5Mbit/s)이라고도 하며, 각 끝에 120Ω 저항으로 종단된 선형 버스를 사용한다.
'''ISO 11898-3'''은 "저속" 또는 "내결함성 CAN"(최대 125kbit/s)이라고도 하며, 선형 버스, 스타 버스 또는 선형 버스로 연결된 여러 스타 버스를 사용하며, 각 노드에서 전체 종단 저항의 일부로 종단된다. 전체 종단 저항은 100Ω 이상이어야 한다.
CAN 버스는 종단되어야 한다. 종단 저항은 신호 반사를 억제하고 버스를 열세 또는 유휴 상태로 되돌리는 데 필요하다. 고속 CAN은 선형 버스의 각 끝에 120Ω 저항을 사용하고, 저속 CAN은 각 노드에 저항을 사용한다.
5. 하위 계층 표준
ISO 11898 시리즈는 도로 차량 내 분산 실시간 제어 및 멀티플렉싱을 위한 컨트롤러 영역 네트워크(CAN)의 물리 계층과 데이터 링크 계층(OSI 모델의 1, 2 계층)을 정의한다.[18]
CAN 물리 계층 및 기타 표준은 다음과 같다.
표준 | 설명 |
---|---|
ISO 11898-1:2015[19] | CAN의 데이터 링크 계층 및 물리적 신호를 정의한다. ISO/IEC 7498-1에 따른 개방형 시스템 상호 연결(OSI) 참조 모델에 기반하여 CAN의 일반 아키텍처를 계층적으로 설명하고, 논리 링크 제어 및 매체 접근 제어 하위 계층의 상세 사양과 함께 CAN 데이터 링크 계층 구현 모듈 간 디지털 정보 교환 설정을 위한 특성을 제공한다. |
ISO 11898-2:2016 | 고속 CAN (최대 1 Mbit/s) 매체 접근 장치(MAU)와 물리 계층 (ISO 8802-3 준수)을 정의한다. 2선 평형 회선 신호 방식을 사용하며, 차량 파워트레인 및 산업 제어 네트워크에서 가장 많이 사용된다. |
ISO 11898-3:2006 | 저속, 내결함성, 매체 종속 인터페이스 (40 kbit/s ~ 125 kbit/s)를 정의한다. CAN 장착 도로 차량 ECU 간 디지털 정보 교환 설정에 사용된다. |
ISO 11898-4:2004 | CAN (TTCAN)에서 시간 트리거 통신을 정의한다. CAN 장착 도로 차량 ECU 간 시간 트리거 디지털 정보 교환 설정에 적용되며, ISO 11898-1에 따른 논리 링크 및 매체 접근 제어 작동 조정을 위한 프레임 동기화 엔티티를 정의한다. |
ISO 11898-5:2007 | 저전력 소비 기능이 필요한 시스템을 위한 CAN 물리 계층 확장 (최대 1 Mbit/s)을 정의한다. ISO 11898-2의 확장판이다. |
ISO 11898-6:2013 | 선택적 절전 모드 해제 메커니즘을 지정하는 CAN 물리 계층 확장 (최대 1 Mbit/s)을 정의한다. ISO 11898-2 및 ISO 11898-5의 확장판이다. |
ISO 16845-1:2016 | CAN 구현 적합성 확인 방법론 및 추상 테스트 스위트를 제공한다. |
ISO 16845-2:2018 | 구현된 선택적 절전 모드 해제 기능이 있는 CAN 트랜시버 적합성 확인 테스트 케이스 및 요구 사항을 설정한다. |
6. 상위 계층 프로토콜
CAN 표준은 흐름 제어, 장치 주소 지정, 하나의 메시지보다 큰 데이터 블록 전송 등을 포함하지 않아 다양한 상위 계층 프로토콜이 구현되었다. 주요 상위 계층 프로토콜은 다음과 같다.
프로토콜 | 설명 |
---|---|
ARINC 812 또는 ARINC 825 | 항공 산업 |
CANopen | 산업 자동화, 철도 차량(IEC 61375-3-3) |
DeviceNet | 산업 자동화 |
EnergyBus | 배터리-충전기 통신(CiA 454 및 IEC 61851-3) |
ISOBUS (ISO 11783) | 농업 |
ISO-TP (ISO 15765-2) | 자동차 진단을 위한 전송 프로토콜 |
MilCAN | 군용 차량 |
NMEA 2000 (IEC 61162-3) | 해양 산업 |
SAE J1939 | 버스 및 트럭용 차량 내 네트워크 |
SAE J2284 | 승용차용 차량 내 네트워크 |
통합 진단 서비스(UDS) (ISO 14229) | 자동차 진단 |
LeisureCAN | 레저 보트/차량 산업 |
CANaerospace | 항공 산업 |
CAN Kingdom | 내장 제어 시스템 (크바서(Kvaser)) |
CCP/XCP | 자동차 ECU 캘리브레이션 |
GMLAN | 제너럴 모터스 |
RV-C | 레크리에이션 차량 (RVIA) |
SafetyBUS p | 산업 자동화 (필츠(Pilz)) |
UAVCAN | 항공우주 및 로봇 공학 |
CSP | 큐브 위성 우주 프로토콜 |
VSCP | 모든 종류의 자동화 작업에 적합한 무료 자동화 프로토콜 |
CAN in Automation(CiA)는 CAN 기반 상위 계층 프로토콜 및 해당 국제 표준화를 개발하고 지원하는 국제 사용자 및 제조업체 조직이다.[20]
7. 보안
CAN은 하위 계층 프로토콜이므로 본질적으로 보안 기능을 지원하지 않는다. 표준 CAN 구현에는 암호화가 없어 중간자 공격에 취약하다. 따라서 애플리케이션은 자체 보안 메커니즘(들어오는 명령 인증 등)을 배포해야 한다.[21] 적절한 보안 조치를 구현하지 못하면 공격자가 버스에 메시지를 삽입할 경우 펌웨어 수정, 키 프로그래밍, 잠김 방지 브레이크 액추에이터 제어 등 다양한 종류의 공격이 발생할 수 있다.[37] 다만, 이러한 일부 안전 필수 기능에 암호가 존재하긴 하지만, 보편적으로 구현되지 않으며 제한된 수의 시드/키 쌍을 가지고 있다.
실제로 엔진 시동에 특화된 CAN 장치를 연결하여, 짧은 시간 안에 자동차를 절도하는 사례가 발생하고 있다.[38][39]
8. 개발 도구
CAN 버스를 개발하거나 문제를 해결할 때 하드웨어 신호 검사가 매우 중요할 수 있다. 로직 분석기와 버스 분석기는 신호를 수집, 분석, 디코딩 및 저장하여 사용자가 고속 파형을 편리하게 볼 수 있도록 하는 도구이다. 또한 전문적인 도구와 CAN 버스 모니터도 있다.
CAN 버스 모니터는 CAN 버스를 사용하는 하드웨어 개발 중에 사용되는 분석 도구로, 종종 컴퓨터 하드웨어와 소프트웨어의 조합으로 이루어진다.[1]
일반적으로 CAN 버스 모니터는 CAN 버스의 트래픽을 수신하여 사용자 인터페이스에 표시한다.[2] CAN 버스 모니터는 종종 CAN 프레임을 버스로 전송하여 CAN 버스 활동을 시뮬레이션할 수 있는 기능을 제공한다.[2] 따라서 CAN 버스 모니터는 특정 장치에서 예상되는 CAN 트래픽을 검증하거나 CAN 버스에 연결된 특정 장치의 반응을 검증하기 위해 CAN 트래픽을 시뮬레이션하는 데 사용할 수 있다.[2]
9. 라이선스
보쉬는 이 기술에 대한 특허를 보유하고 있다.[22] CAN 호환 마이크로프로세서 제조업체는 CAN 상표 사용 및 CAN FD 관련 특허 사용에 대한 라이선스 수수료를 보쉬에 지불하며, 이는 일반적으로 칩 가격에 포함되어 고객에게 전가된다.[40] ASIC 또는 FPGA를 사용하는 제품 제조업체는 CAN 프로토콜 라이선스에 대한 수수료를 지불해야 한다.[40]
참조
[1]
웹사이트
CAN History
https://web.archive.[...]
CAN in Automation
2016-02-25
[2]
웹사이트
Mercedes-Benz S-Class W 140.
https://web.archive.[...]
2016-02-23
[3]
웹사이트
CAN in Automation - Mercedes W140: First car with CAN
https://can-newslett[...]
2017-10-27
[4]
웹사이트
Bosch Semiconductor CAN Literature
https://web.archive.[...]
2017-05-31
[5]
웹사이트
Building Adapter for Vehicle On-board Diagnostic
http://www.obddiag.n[...]
2009-09-09
[6]
논문
Comparison of Event-Triggered and Time-Triggered Concepts with Regard to Distributed Control Systems
Embedded World
2004
[7]
웹사이트
NISMO Increases GT6 GPS Data Logger Functionality and Track Count
http://www.gtplanet.[...]
2014-10-25
[8]
웹사이트
What is DiveCAN and why should I care?
https://www.shearwat[...]
2016-03-22
[9]
서적
Automotive cybersecurity engineering handbook: the automotive engineer's roadmap to cyber-resilient vehicles
Packt
2023
[10]
웹사이트
CAN_XL, CAN XL, CAN, Bosch_CAN, IP-modules
https://www.bosch-se[...]
2024-05-15
[11]
웹사이트
ISO11783 a Standardized Tractor – Implement Interface
https://web.archive.[...]
2017-01-29
[12]
표준
ISO 11898-1:2015 – Road vehicles — Controller area network (CAN) — Part 1: Data link layer and physical signalling
[13]
논문
Proc. of the 24th Int. Conf. on Real-Time Networks and Systems (RTNS 2017)
ACM
[14]
웹사이트
Understanding Microchip's CAN Module Bit Timing
http://ww1.microchip[...]
[15]
웹사이트
ISO7637-3 diodes protection for CAN bus
http://www.st.com/co[...]
[16]
웹사이트
CAN bus ESD protection
http://www.st.com/co[...]
[17]
웹사이트
CAN BUS MESSAGE FRAMES – Overload Frame, Interframe Space
http://rs232-rs485.b[...]
2009-11-18
[18]
웹사이트
Controller Area Network (CAN)
https://web.archive.[...]
Vector Group
2013-09-25
[19]
웹사이트
ISO 11898-1:2003 - Road vehicles -- Controller area network (CAN) -- Part 1: Data link layer and physical signalling
http://www.iso.org/i[...]
ISO
[20]
웹사이트
International standardization
https://www.can-cia.[...]
CiA
[21]
웹사이트
We Drove a Car While It Was Being Hacked
https://www.vice.com[...]
2014-05-29
[22]
웹사이트
License Conditions CAN Protocol and CAN FD Protocol
https://web.archive.[...]
2016-03-15
[23]
웹사이트
CAN History
https://www.can-cia.[...]
CAN in Automation
2017-08-01
[24]
웹사이트
Bosch Semiconductor CAN Literature
http://www.bosch-sem[...]
[25]
문서
CAN FDパッシブ用のCANトランシーバは、CAN FDフレーム受信時に通信を遮断することによりCAN FDの通信を邪魔しない動作をする
[26]
논문
Analytical and Experimental Performance Evaluations of CAN-FD Bus
2018
[27]
웹사이트
Building Adapter for Vehicle On-board Diagnostic
http://www.obddiag.n[...]
2009-09-09
[28]
논문
Comparison of Event-Triggered and Time-Triggered Concepts with Regard to Distributed Control Systems
Embedded World
2004
[29]
웹사이트
NISMO Increases GT6 GPS Data Logger Functionality and Track Count
http://www.gtplanet.[...]
2017-08-01
[30]
웹사이트
ISO11783 a Standardized Tractor – Implement Interface
https://www.can-cia.[...]
[31]
웹사이트
Understanding Microchip’s CAN Module Bit Timing
http://ww1.microchip[...]
[32]
웹사이트
ISO7637-3 diodes protection for CAN bus
http://www.st.com/co[...]
2017-08-01
[33]
웹사이트
CAN bus ESD protection
http://www.st.com/co[...]
2017-08-01
[34]
웹사이트
CAN BUS MESSAGE FRAMES – Overload Frame, Interframe Space
https://rs232-rs485.[...]
2017-08-01
[35]
웹사이트
Controller Area Network (CAN)
https://vector.com/v[...]
Vector Group
2013-09-25
[36]
웹사이트
ISO 11898-1:2015 - Road vehicles -- Controller area network (CAN) -- Part 1: Data link layer and physical signalling
https://www.iso.org/[...]
ISO
2017-08-01
[37]
웹사이트
We Drove a Car While It Was Being Hacked
http://motherboard.v[...]
2017-08-01
[38]
웹사이트
鍵はかけていたのに… なぜ盗まれた?
https://www3.nhk.or.[...]
2021-11-06
[39]
뉴스
ランクル、2日間で9台盗難…「キャンインベーダー」で解錠か
https://news.yahoo.c[...]
2021-11-11
[40]
문서
License Conditions CAN Protocol and CAN FD Protocol
http://www.bosch-sem[...]
[41]
웹사이트
CAN in Automation.
http://www.can-cia.o[...]
[42]
웹사이트
Building Adapter for Vehicle On-board Diagnostic
http://www.obddiag.n[...]
2009-09-09
[43]
웹인용
CAN in Automation (CiA): History of the CAN technology
https://www.can-cia.[...]
2017-03-03
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com